A document and/or image for rendering on a display device or on a recording medium, such a print media, are generated in a variety of ways; however, the generated document and/or image are conventionally in one of two forms, rasterized data or non-rasterized data.
Non-rasterized data is conventionally the result of utilizing graphics-oriented methodologies such as OpenGL, Postscript™, and scalable vector graphics to generate the document and/or image. Moreover, rasterized data is conventionally the result of a scanning process (the converting of a physical document and/or image to an electronic form) or a rasterization process.
Rasterized data is conventionally a bitmap representation of the document and/or image, whereas non-rasterized data is conventionally a file of commands and/or mathematical operations that a raster image processor can utilize the non-rasterized data to create a bitmap (rasterized data) of the document and/or image. On the other hand, digital photographic devices, such as scanners and digital cameras, directly generate rasterized data (bitmap) when converting either the image or document to an electronic representation thereof.
FIG. 1 illustrates a conventional system that processes either rasterized data or non-rasterized data for rendering by a print engine onto a recording medium. As illustrated in FIG. 1, the conventional system is, for the purposes of explanation, split into a source subsystem 10 and a rasterized data processing subsystem 20. It is noted that although this conventional system illustrates a printing system, the processing of the rasterized data or non-rasterized data may be executed by computer-based graphics cards such that the data is processed for viewing on a device.
With respect to the source subsystem 10, the data to be rendered is sourced from either a rasterized data source 11, such a scanner, or a non-rasterized data source 12, such as a personal computer which is capable of implementing graphics-oriented methodologies. If the data to be rendered is sourced from the rasterized data source 11, the rasterized data can be directly processed by rasterized image processing hardware 24.
On the other hand, if the data to be rendered is sourced from the non-rasterized data source 12, the non-rasterized data must be converted to rasterized data before it can be processed by the rasterized image processing hardware 24.
Conventionally, non-rasterized data is converted to rasterized data by a conventional raster image processing engine 14, as illustrated in FIG. 1. If the non-rasterized data has been manipulated (transformed) with respect to translation, scaling, and/or rotation, and the conventional graphics-oriented methodologies used transformation matrices to represent these manipulations, the transformation matrices are utilized in the rasterizing processor. It is noted that the individual transformation matrices can be represented in composite transformation matrix which is generated from matrix multiplication of the individual transformation matrices in transformation operational order.
Once a composite transformation matrix is generated any subsequent transformation can realized by matrix multiplication of the composite transformation matrix with the subsequent transformation matrix. Conventional transformations are translation, scaling, and rotation.
A translation transformation is the movement of a point within an image or an image from its original location to another location in two-dimensional space by a constant offset. Translations can be represented by a matrix.
A scaling transformation is performed by multiplying the position of a vertex by a scalar value. This multiplication has the effect of scaling a vertex with respect to the origin. Scaling can also be represented by a matrix. Scaling can be both symmetric or asymmetric.
A rotation transformation is a rotating of the image which depends upon on the axis around which a point is to be rotated. In conventional systems, the angle of rotation is represented by theta, θ. It is noted that rotation can also be represented by a matrix.
A composite transformation matrix CTM is a matrix formed from matrix multiplications of the individual transformation matrices in the order that the transformations are performed. Thus, a single composite matrix can contain all the translation, scaling, and/or rotation information for the non-rasterized data.
The non-rasterized data is conventionally converted to rasterized data in a raster image processing engine 14 by consuming the composite transformation matrix CTM so as to produce rasterized data which is properly translated, scaled, and/or rotated. The rasterized data can then be processed by rasterized image processing hardware 24 to prepare the rasterized data for rendering by the print engine 26.
Conventionally, once the non-rasterized data is converted into rasterized form, the use of the composite transformation matrix is abandoned because conventional printing applications (print engine 26) do not accept a matrix to describe rotation, scaling, and translation. Instead conventional printing applications utilized image parameters values which are defined as variables, not in matrix form. This loss of the composite transformation matrix creates a disconnection between matrix-based algorithms and hardware to effect an imaging operation.
Compositing operations, nonetheless, are useful even when manipulating and transforming rasterized data in that compositing operations may improve accuracy, quality, and efficiency. More specifically, a rendering engine may contain processing hardware that has a unique order with respect to performing transformations (translation, scaling, and/or rotation) upon the rasterized data. It is noted that performing transformations upon the rasterized data is order dependent in that performing rotation before translation may produce a different result from performing translation before rotation.
Thus, if it is desired to manipulate the rasterized data by transformations in the order of rotation, scaling, translation (RST), but the rendering hardware is differently ordered, such as scaling, translation, rotation (STR), the rotation, scaling, translation information in the composite matrix should be decomposed in such a manner to match the order of the operations in the rendering device. The difficulty arises in deciphering (decomposing) fundamental rotation, scaling, and translations values needed to program the raster imaging algorithms (typically hardware based) when represented in matrix form.
Therefore, it is desirable to provide a system and method that is capable of utilizing a composite transformation matrix and matrix operations upon rasterized data. Moreover, it is desirable to provide a system and method that enables the proper decomposing of a composite transformation matrix such that the transformations (rotation, scaling, and/or translation) can be properly performed by a rendering device that has a predetermined transformation order which may not coincide with the transformation order used to create the composite transformation matrix.